using System.Text.Json.Serialization;
using JlPay.Sdk.Models;

namespace JlPay.Sdk.Models.Trans.Common
{
    /// <summary>
    /// 撤销请求
    /// </summary>
    public class CancelRequest : OrgBaseRequest
    {
        /// <summary>
        /// API接口路径
        /// </summary>
        public const string API_URL = "/open/trans/cancel";

        /// <summary>
        /// 商户号
        /// </summary>
        [JsonPropertyName("mch_id")]
        public string MchId { get; set; } = string.Empty;

        /// <summary>
        /// 外部订单号
        /// </summary>
        [JsonPropertyName("out_trade_no")]
        public string OutTradeNo { get; set; } = string.Empty;

        /// <summary>
        /// 原外部订单号
        /// </summary>
        [JsonPropertyName("ori_out_trade_no")]
        public string OriOutTradeNo { get; set; } = string.Empty;

        /// <summary>
        /// 交易金额
        /// </summary>
        [JsonPropertyName("total_fee")]
        public string TotalFee { get; set; } = string.Empty;

        /// <summary>
        /// 原平台订单号
        /// </summary>
        [JsonPropertyName("ori_transaction_id")]
        public string OriTransactionId { get; set; } = string.Empty;

        /// <summary>
        /// 备注
        /// </summary>
        [JsonPropertyName("remark")]
        public string Remark { get; set; } = string.Empty;

        /// <summary>
        /// 终端IP
        /// </summary>
        [JsonPropertyName("mch_create_ip")]
        public string MchCreateIp { get; set; } = string.Empty;

        /// <summary>
        /// 经度
        /// </summary>
        [JsonPropertyName("longitude")]
        public string Longitude { get; set; } = string.Empty;

        /// <summary>
        /// 纬度
        /// </summary>
        [JsonPropertyName("latitude")]
        public string Latitude { get; set; } = string.Empty;
    }
} 